package com.daikun.common.aop.annos;

import com.daikun.common.iface.BaseParamCheckIface;
import com.daikun.common.model.BaseResult;

import java.lang.annotation.*;

/**
 * 当前注解只能标注在 @Controller 的接口，@RequestMapping 方法上，否则此注解无效
 * 接口入参对象如果是 {@link BaseParamCheckIface} 的子类，则会自动调用参数校验方法，若校验不通过，直接返回 400
 * 若入参对象不存在 ParamCheckIface 的子类，此注解不生效
 * 返回的数据结构 {@link BaseResult}，会将错误信息填充到 msg 字段中
 * @author earl created 2025-07-03
 * @version init 0.0.1
 */
@Documented
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface BaseCheckRequestParam {

    /**
     * 是否显示参数校验失败得详细信息
     * true -> 返回入参对象实现方法中存储的 map 拼接信息
     * false -> 调用 {@link com.daikun.common.iface.I18nMessageIface} 的实现类，传参 {@link com.daikun.common.enums.BaseResultEnum#PARAM_ERROR} 对应的 code，获取 message 描述信息
     */
    boolean showInfo() default true;

}
